"""
统一API响应格式
"""
from rest_framework.response import Response
from rest_framework.views import exception_handler
from rest_framework import status


def success_response(data=None, message='操作成功', code=200):
    """
    成功响应
    
    Args:
        data: 返回的数据
        message: 提示信息
        code: 状态码
    
    Returns:
        Response对象
    """
    return Response({
        'code': code,
        'message': message,
        'data': data,
        'success': True
    }, status=status.HTTP_200_OK)


def error_response(message='操作失败', code=400, data=None):
    """
    错误响应
    
    Args:
        message: 错误信息
        code: 错误码
        data: 额外数据
    
    Returns:
        Response对象
    """
    return Response({
        'code': code,
        'message': message,
        'data': data,
        'success': False
    }, status=status.HTTP_200_OK)  # 业务错误也返回200，由code区分


def custom_exception_handler(exc, context):
    """
    自定义异常处理器
    """
    # 调用REST framework默认的异常处理方法
    response = exception_handler(exc, context)

    if response is not None:
        # 统一异常响应格式
        custom_response_data = {
            'code': response.status_code,
            'message': str(exc),
            'data': None,
            'success': False
        }
        response.data = custom_response_data

    return response

